home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / mmdf / mmdf-IIb.43 / uip / send / s_onint.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-03-28  |  2.1 KB  |  130 lines

  1. /* name:
  2.     onint, onint2, onint3
  3.  
  4. function:
  5.     to take appropriate actions before terminating from a del.
  6.  
  7. calls:
  8.     exit
  9.  
  10. called by:
  11.     input
  12.  
  13. */
  14.  
  15. /*
  16. **    R E V I S I O N  H I S T O R Y
  17. **
  18. **    03/31/83  GWH    Split the SEND program into component parts
  19. **            This module contains : msgreview, onint, onint2,
  20. **            onint3, confirm.
  21. **
  22. **    10/05/83  GWH    Fixed s_exit so that the draft file will not be
  23. **            removed in abnormal terminations.
  24. **
  25. */
  26.  
  27. #include "./s.h"
  28. #include "./s_externs.h"
  29.  
  30. /*ARGSUSED*/
  31. msgreview (curline)
  32.     register int curline;
  33. {
  34.     FILE *fp;
  35.     register int c;
  36.  
  37.     fp = fdopen (dup (drffd), "r");
  38.     while ((c = getc (fp)) != EOF && !aborted)
  39.     {
  40.     if (!pflag)
  41.         putchar (c);
  42.     else {
  43.             switch (c)
  44.             {
  45.                 case '\n':
  46.                 if (++curline <= 20)
  47.                 {
  48.                     putchar ('\n');
  49.                     break;
  50.                 }
  51.                 case '\f':
  52.                 if (c == '\f')
  53.                     printf ("^L");
  54.                 putchar ('\n');
  55.                 printf (" Continue [Confirm] ");
  56.                 fflush (stdout);
  57.                 switch (getchar ())
  58.                 {
  59.                     case 'Y':
  60.                     case 'y':
  61.                     while (getchar () != '\n')
  62.                         continue;
  63.                     case '\n':
  64.                     curline = 0;
  65.                     break;
  66.     
  67.                     default:
  68.                     while (getchar () != '\n')
  69.                         continue;
  70.                     fclose (fp);
  71.                     return;
  72.                 }
  73.                 break;
  74.     
  75.                 default:
  76.                 putchar (c);
  77.             }
  78.         }
  79.     }
  80.     fclose (fp);
  81. }
  82.  
  83. sigtype
  84. onint ()
  85. {
  86.     write(1, " XXX\n", 5);
  87.     signal (SIGINT, onint);
  88.     if (inrdwr)
  89.     aborted = TRUE;
  90.     else
  91.     longjmp (savej, 1);
  92. }
  93.  
  94. sigtype
  95. onint2 ()
  96. {
  97.     write(1, " XXX\n", 5);
  98.     s_exit (-1);
  99. }
  100.  
  101. sigtype
  102. onint3 ()
  103. {
  104.     signal (SIGINT, onint3);
  105.  
  106.     if (body)
  107.     longjmp (savej, 1);
  108.  
  109.     s_exit (0);
  110. }
  111.  
  112. confirm ()
  113. {
  114.     char answer[32];
  115.  
  116.     clearerr(stdin);    /*  Be friendlier if user types control-D  */
  117.     printf (" [Confirm] ");
  118.     gather (answer, sizeof (answer));
  119.     return (prefix ("yes", answer) ? TRUE : FALSE);
  120. }
  121.  
  122. /* preliminary exit routine to clean up draft file */
  123. s_exit( xcode )
  124. int xcode;
  125. {
  126.     if( xcode == 0 || !body )
  127.         unlink(drffile);
  128.     exit( xcode );
  129. }
  130.